Remote visualization solutions allow the users of a graphical desktop to interact with graphical applications from a remote machine or thin client.
Thin client viewers receive images over the network, which are rendered to give the end user the impression that they are using an application locally on their computer or workstation. Various implementations and algorithms are used in remote visualization applications and they normally employ image compression and they usually send only the parts of the screen that recently changed in order to optimize the bandwidth available in the network.
Remote applications such as the Open Source VNC (Virtual Network Computing) or Microsoft Remote Desktop (Microsoft is a trade mark of Microsoft Corporation in the US. and other countries) have recently been enhanced to support 3D visualization applications. These applications use graphics APIs (application programming interfaces) for 3D rendering and, due to the complexity of the rendered objects, require special hardware inside the graphics cards to accelerate 3D data processing. For example, such graphics APIs include OpenGL (Open Graphics Library) (OpenGL is a trade mark of Silicon Graphics, Inc.), and DirectX (DirectX is a trade mark of Microsoft Corporation in the US. and other countries).
OpenGL is the standard cross-platform middleware Software Development Kit (SDK) for developing 3D applications. This SDK allows the application to access, in a multi-platform and multi-vendor environment, various 3D rendering primitives and leverages any and all available hardware support and acceleration on the host system.
DirectX is the Microsoft alternative to OpenGL and allows Windows (Windows is a trade mark of Microsoft Corporation) applications to use various 3D rendering primitives and leverages any hardware support and acceleration available in the host system.
Most remote visualization enablement software works by drawing the desktop image inside the graphics card of the system server (either inside the front buffer, inside the back/memory buffer, or both) or inside a virtual frame buffer in system memory, fetching the image from the draw buffer, compressing the image (or parts of it) and finally transmitting the compressed data over the network to the client where it will be reproduced. Reproducing is the simple step of drawing the received images to specified coordinates on the client display. Mouse movements and keyboard events are relayed back from the client viewer to the server desktop providing a seamless user experience. Remote visualization applications should do all this without any noticeable application performance degradation at the client and typically this requires image updates at frame rates in or close to 25 frames per second.
The main restriction to remote visualization applications is network latency and bandwidth. Various techniques are used for compression and transmission of the images to the rendering client with the aim of reducing the required network bandwidth. These include: Sending partial images corresponding to only the changed sectors of the whole desktop between two successive frames; Using different compression schemes, i.e., JPEG (Joint Photographic Experts Group) with varying qualities, LZW (Lempel-Ziv-Welch lossless data compression algorithm); Frame dropping in which one or more frames is not sent in order to reduce network loads; Tuning encoder and decoder performance for specific CPU hardware, i.e., using performance optimizations provided through special instruction sets available in Intel (Intel is a trade mark of Intel Corporation) and other vendor CPUs (computer processing units); Manipulation of image quality, allowing the user to choose better or lower quality in a trade-off with interactive performance.